from pydantic_settings import BaseSettings


class Settings(BaseSettings):
    """
    项目全局配置类

    基于Pydantic Settings实现，支持：
    1. 从环境变量读取配置
    2. 从.env文件读取配置（开发环境友好）
    3. 类型自动转换与验证
    4. 配置参数文档化
    """

    # 数据库配置
    database_url: str = "DATABASE_URL"
    db_pool_size: int = 10
    db_max_overflow:  int = 10

    # Redis配置
    redis_host: str = "REDIS_HOST"
    redis_port: int = 6379
    redis_db: int = 0
    redis_password: str = ""

    # 其他配置
    secret_key: str = "SECRET_KEY"
    environment: str = "ENVIRONMENT"

    # ------------------------------
    # 配置加载选项
    # ------------------------------
    class Config:
        """Pydantic配置加载选项"""
        # 从.env文件加载环境变量（开发环境使用）
        env_file = ".env"
        # .env文件编码
        env_file_encoding = "utf-8"
        # 允许通过属性名访问环境变量（不区分大小写）
        case_sensitive = False
        # 额外的环境变量文件（可选，按顺序覆盖）
        env_file = [".env", ".env.local"]


# 全局配置实例（项目中其他地方通过导入此实例使用配置）
settings = Settings()
